<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;//命名空间的三元素：常量,方法,类
use input;
//引入DB门面
use DB;
use App\Home\Member;
use Cache;
use Arr;

class TestController extends Controller
{
    //phpinfo信息
    public function test1(){
        phpinfo();//phpinfo()自带输出功能
    }
    public function test2(){
        echo Input::get('id','18170352799').'</br>';//获取一个值，如果没有，则使用第二个参数
        $all = Input::all();//all（）获取全部的值


        // dd($all);//dump+die，之后的行为不执行
        // dd(Input::get('name'));//获取指定信息（字符串形式）
        // dd(Input::only(['id','name']));//获取指定的几个值
        // dd(Input::except(['name']));//获取除了指定值之外的值
        // dd(Input::has('gender'));//判断指定的值是否存在（布尔值）
        
    }
    public function add(){
        //定义关联操作的表
        $db = DB::table('member');
        //使用insert增加记录,可插入多条
        //使用insertGetId增加记录,只可插入一条
        $result = $db -> insert([
            [
                'name' => '李勇杰',
                'age' => '20',
                'email' => '3381641613@qq.com'
            ],
            [
                'name' => '李俊杰',
                'age' => '16',
                'email' => '3381641614@qq.com'
            ],
        ]);
        dd($result);
    }

//使用delete删除数据
    public function del(){
        $db = DB::table('member');
        $dele = $db -> where('id','=','1') -> delete();
        dd($dele);
    }

//使用update修改记录
    public function update(){
        $db = DB::table('member');
        //修改id为1的用户的名字为李欣
        $ressult = $db -> where('id','=','1') -> update([
            //需要修改字段的键值对
            'name' => 'li',
        ]);
        dd($ressult);
    }

//get()相当于select*from member;
    public function select(){
        //查询全部数据
        $db = DB::table('member');
        $data = $db -> get();
        //循环数据
        // foreach ($data as $key => $value){
        //     echo "id是:{$value->id},
        //           名字是:{$value->name},
        //           邮箱是:{$value->email}
        //           </br>";
        // }
        //查询id大于1的记录
        //当条件不止一个时，->where()->where表示并且
        //当条件不止一个时，->where()->orwhere表示或者
        // $data = $db -> where('id','>','1') -> orwhere('id','=','') -> get();
        
        //取出筛选内容中的第一行数据
        // $data1 = $db -> first();
        // //取出指定字段的值(id为1的记录的人员名字)
        // $data2 = $db -> where('id','2') -> value('name');
        //查询指定字段的多个值
        $data3 = $db -> select('name','email') -> get();
        
        //将查询数据进行排序 
        //desc倒序asc正序
        $data4 = $db -> orderBy('id','desc') -> get();
        //限制输出的条数limit()
        //从什么地方开始offset()
        $data5_1 = $db -> limit(1) -> offset(0) -> get();
        $data5_2 = $db -> limit(1,0) -> get();
        dd($data4);
    }


    public function test3(){
        //现在时间
        $date = date('Y-m-d h:i:s',time());
        //今天星期几
        $day = '日';
        //传递时间戳
        //获取向后一个时间段的时间
        $time = strtotime('+2  year');
        //展示视图
        return view('home/test/test3',compact('date','day','time'));/*['date' => $date,'day' => $day]*/
    }
    //循环标签
    public function test4(){
        //查询数据
        $data = DB::table('member') -> get();
        //获取今天的星期数字
        $day = date('N');
        //展示视图，传递数据
        return view('home/test/test4',compact('data','day'));
    }
    //模板的继承
    public function test5(){
        return view('home/test/test5');
    }
    public function test6(){
        return view('home/test/test6');
    }
    public function test8(Request $request){
        //实例化模型，将表和类映射起来
        $model = new Member();
        //给属性赋值
        // $model -> name = '路飞';
        // $model -> age = '18';
        // $model -> email = '333333333@qq.com';
        // //做具体的操作，将记录映射到实例
        // //save()函数保存当前工作空间的所有变量到文件名制定的文件中
        // $result = $model -> save();


        //方法2的操作添加
        $result = $model -> create($request -> all());
        dd($result);
    }
    public function test9(){
        //查询指定主键的记录
        // $data = Member::find(11) -> toArray( ); 
        $data = Member::where('id','>','4') -> get();
        dd($data);
    }
    public function test10(){
        //ar模式的修改操作
        $data = MEmber::find(4);
        //赋值属性（对需要修改的字段进行赋值）
        $data -> email = 'admin@itcast.cn';
        //具体操作：实例映射到记录
        $result = $data -> save();
        dd($result);
    }
    public function test12(){
        return view('home/test/test12');
    }
    //自动验证
    public function test13(){
        //判断请求类型
        //echo Input::method();
        if(Input::method() == 'POST'){
            //自动验证
        }
        //展示视图
        return view('home/test/test13');
    }











    public function test19(){
        //设置一个缓存，若已存在则直接覆盖
        // Cache::put('class','laravel',10);
        // Cache::put('class','bbb',10);
        //设置一个缓存，若已存在则不添加
        // Cache::add('count2','0',100);
        //永久存储
        // Cache::forever('username','liyongjie');
        //获取指定的值
        // $value1 = Cache::get('urername');
        //获取指定的值,如果不存在则 使用默认值替换
        //通过回调函数的方式来返回默认值
        // $value2_1 = Cache::get('sign','这个家伙很懒，什么都没有留下...');
        // $value2_2 = Cache::get('time',function(){
        //     return date('Y-m-d m:i:s',time());
        // });
        //判断某个值是否存在
        // Cache::has('ddd');
        //从缓存中获取之后再删除（进行一次性存储）
        // $value3 = Cache::pull('class');
        //使用forget方法从缓存中移除缓存项数据
        // Cache::forget('addr');
        //使用flush方法清除所有缓存，并删除对应目录
        // Cache::flush();
        //递增(递增的值,一次递增的量)
        // Cache::increment('count','10');
        //递减
        // Cache::decrement('count2','10');
        //设置默认时间
        // $value4 = Cache::remember('time',100,function(){
        //     return date('Y-m-d m:i:s',time());
        // });
        // dd($value4);
    }
    //辅助函数
    public function testArr(){
        $array = Arr::add(['name' => 'Tom'],'age',18);
        Arr::get($array,'name'); 
        Arr::get($array,'gender','male');
        $array = Arr::except($array,['gender']);
    }
    public function up(){
        Schema::create('articles',function (Blueprint $table) {
            $table->increments('id')->comment('id');
            $table->string('username','60')->unique()->comment('用户名称');
            $table->string('email','30')->unique()->comment('用户邮箱');
            $table->ipAddress('ipAddress')->comment('ip地址');
            $table->timetamps();
        });
    }
}
